package com.innovations.common.utils;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

/**
 * 统一类型转换 sjf 2021-10-12
 */
public class ExtHelper {

    public static String toString(Object data) {
        return data == null ? "" : data.toString().trim();
    }

    public static Integer toInt(Object data) {
        if (data == null) {
            return 0;
        }
        try {
            return Double.valueOf(data.toString()).intValue();
        } catch (Exception ex) {
            return 0;
        }
    }

    public static BigDecimal toBigDecimal(Object data) {
        if (data == null) {
            return new BigDecimal("0");
        }
        try {
            return new BigDecimal(data.toString());
        } catch (Exception ex) {
            return new BigDecimal("0");
        }
    }

    public static Long toLong(Object data) {
        if (data == null) {
            return 0L;
        }
        try {
            return Double.valueOf(data.toString()).longValue();
        } catch (Exception ex) {
            return 0L;
        }
    }

    /**
     * 时间类型转换为 "yyyy-MM-dd HH:mm:ss“ 格式字符串 sjf 2021-12-18
     *
     * @param data
     * @return
     */
    public static String toDateTimeStringCST(Object data) {
        if (data == null) {
            return "";
        }
        try {
            String dateString = data.toString();
            SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
            SimpleDateFormat sdf1 = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.CHINA);
            SimpleDateFormat sdf2 = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
            Date d = sdf.parse(dateString);
            String formatDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d);
            return formatDate;
        } catch (Exception ex) {
            return "";
        }
    }

    /**
     * 时间类型转换为 "yyyy-MM-dd HH:mm:ss“ 格式字符串 sjf 2021-12-18
     *
     * @param data
     * @return
     */
    public static String toDateTimeString(Object data) {
        if (data == null) {
            return "";
        }
        try {
            SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            return ft.format(data);
        } catch (Exception ex) {
            return "";
        }
    }

    /**
     * 转换日期 "yyyy-MM-dd"  sjf 2021-12-18
     *
     * @param data
     * @return
     */
    public static Date toDate(Object data) {
        if (data == null) {
            data = new Date();
        }
        try {
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");//注意月份是MM
            return simpleDateFormat.parse(data.toString());
        } catch (Exception ex) {
            return new Date();
        }
    }

    /**
     * 转换日期时间  sjf 2021-12-18
     *
     * @param data
     * @return "yyyy-MM-dd HH:mm:ss"
     */
    public static Date toDateTime(Object data) {
        if (data == null) {
            data = new Date();
        }
        try {
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//注意月份是MM
            return simpleDateFormat.parse(data.toString());
        } catch (Exception ex) {
            return new Date();
        }
    }

//    /**
//     * 实体深拷贝
//     *
//     * @param obj    被拷贝对象
//     * @param tClass 被拷贝类型
//     * @param <T>
//     * @return
//     */
//    public static <T extends Object> T deepCloneByJson(Object obj, Class<T> tClass) {
//        String jsonStr = JSON.toJSONString(obj);
//        JSONObject jsonObj = JSON.parseObject(jsonStr);
//        T t = JSON.toJavaObject(jsonObj, tClass);
//        return t;
//    }

}
